package com.ra.service;

import io.jsonwebtoken.Claims;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Date;
import java.util.Map;

public interface JwtTokenService {

    String CLAIM_KEY_USERNAME = "sub";
    String CLAIM_KEY_CREATED = "created";

    String generateToken(Map<String, Object> claims);

    Claims getClaimsFromToken(String token);

    Date generateExpirationDate();

    Date getExpiredDateFromToken(String token);

    boolean isTokenExpired(String token);

    String getUserNameFormToken(String token);

    boolean validateToken(String token, UserDetails userDetails);

    String generateToken(UserDetails userDetails);

    boolean canRefresh(String token);

    String refreshToken(String token);

    void delLoginUser(Integer userId);

}
